_g_c A GLX rendering context to be attached to _d_r_a_w and _r_e_a_d.
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnnttttRRRReeeeaaaaddddSSSSGGGGIIII performs the same functions as ggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnntttt, with
one important difference: it attaches a GLX context to two drawables,
rather than one. The second drawable serves as the source for any pixel
data that are read by ggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss, ggggllllCCCCooooppppyyyyPPPPiiiixxxxeeeellllssss, and OpenGL extension
commands that read color, depth, or stencil data from the framebuffer.
It may be an ordinary GLX drawable, or it may be a GLX video source (see
ggggllllXXXXCCCCrrrreeeeaaaatttteeeeGGGGLLLLXXXXVVVViiiiddddeeeeooooSSSSoooouuuurrrrcccceeeeSSSSGGGGIIIIXXXX). Accumulation operations (see ggggllllAAAAccccccccuuuummmm) are
not allowed when _d_r_a_w is not identical to _r_e_a_d.
It is not necessary for _d_r_a_w and _r_e_a_d to have the same ancillary buffers.
It is also not necessary for _r_e_a_d to contain a buffer corresponding to
the current GGGGLLLL____RRRREEEEAAAADDDD____BBBBUUUUFFFFFFFFEEEERRRR of _g_c. For example, the current
GGGGLLLL____RRRREEEEAAAADDDD____BBBBUUUUFFFFFFFFEEEERRRR of _g_c might be GGGGLLLL____BBBBAAAACCCCKKKK, and _r_e_a_d might be single-buffered.
If there is no corresponding buffer in _r_e_a_d, then the pixel values
extracted from _r_e_a_d will be undefined, but no error will be generated.
Operations that query the value of GGGGLLLL____RRRREEEEAAAADDDD____BBBBUUUUFFFFFFFFEEEERRRR use the value set last
in _g_c, regardless of whether _r_e_a_d has the corresponding buffer.
ggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnnttttRRRReeeeaaaaddddSSSSGGGGIIII returns TTTTrrrruuuueeee if it is successful, FFFFaaaallllsssseeee otherwise.
If FFFFaaaallllsssseeee is returned, the previously current rendering context and
BBBBaaaaddddMMMMaaaattttcccchhhh is generated if any of the following conditions hold:
1. _d_r_a_w was not created on the same X screen and visual as _g_c.
2. _r_e_a_d was not created on the same X screen as _g_c.
3. _d_r_a_w is NNNNoooonnnneeee and _g_c is not NNNNoooonnnneeee.
4. _d_r_a_w is a GLX video source.
BBBBaaaaddddAAAAcccccccceeeessssssss is generated if _g_c was current to another thread at the time
ggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnnttttRRRReeeeaaaaddddSSSSGGGGIIII was called.
GGGGLLLLXXXXBBBBaaaaddddDDDDrrrraaaawwwwaaaabbbblllleeee is generated if either _d_r_a_w or _r_e_a_d is not a valid GLX
drawable.
GGGGLLLLXXXXBBBBaaaaddddCCCCoooonnnntttteeeexxxxtttt is generated if _g_c is not a valid GLX context.
GGGGLLLLXXXXBBBBaaaaddddCCCCoooonnnntttteeeexxxxttttSSSSttttaaaatttteeee is generated if ggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnnttttRRRReeeeaaaaddddSSSSGGGGIIII is called
between a ggggllllBBBBeeeeggggiiiinnnn and the corresponding call to ggggllllEEEEnnnndddd.
GGGGLLLLXXXXBBBBaaaaddddCCCCoooonnnntttteeeexxxxttttSSSSttttaaaatttteeee is also generated if the rendering context current to
the calling thread has OpenGL renderer state GGGGLLLL____FFFFEEEEEEEEDDDDBBBBAAAACCCCKKKK or GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT.
GGGGLLLLXXXXBBBBaaaaddddCCCCuuuurrrrrrrreeeennnnttttWWWWiiiinnnnddddoooowwww is generated if there are pending OpenGL commands for
the previous context and the current drawable is a window that is no
longer valid.
BBBBaaaaddddAAAAlllllllloooocccc may be generated if the server has delayed allocation of
ancillary buffers until ggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnnttttRRRReeeeaaaaddddSSSSGGGGIIII is called, only to find
that it has insufficient resources to complete the allocation.
The SSSSGGGGIIII____mmmmaaaakkkkeeee____ccccuuuurrrrrrrreeeennnntttt____rrrreeeeaaaadddd extension is supported on RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee,
RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems with the following restrictions:
1. A BBBBaaaaddddMMMMaaaattttcccchhhh error is generated if
a. _d_r_a_w is RGBA and _r_e_a_d is not, or vice versa. A video
source (see ggggllllXXXXCCCCrrrreeeeaaaatttteeeeGGGGLLLLXXXXVVVViiiiddddeeeeooooSSSSoooouuuurrrrcccceeeeSSSSGGGGIIIIXXXX) is considered to
be RGBA.
b. _r_e_a_d is not a video source and it does not have the same
color component resolution or the same number of index bits
as _d_r_a_w;
c. Either _d_r_a_w or _r_e_a_d is not at buffer level 0 (the main
2. When _d_r_a_w is a pixmap then _r_e_a_d must be the same pixmap. A
BBBBaaaaddddAAAAlllllllloooocccc error is generated otherwise.
On RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX, on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy, on HHHHiiiigggghhhh
IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt, on SSSSoooolllliiiidddd IIIImmmmppppaaaacccctttt systems, on OOOO2222 systems, and on
OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems, it is not possible to use a context for rendering